"""
URL configuration for gupiao_ananlysis project.

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include

from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job
from future_history_app.tasks import task_test, pull_futures_history_data, pull_futures_current_data  # 导入任务函数
import django_apscheduler


# 配置调度器
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")

# 添加定时任务（使用 cron 表达式）
# 示例：每天凌晨 1 点执行
scheduler.add_job(
    task_test,
    trigger="cron",     # 使用cron触发器
    hour=16,            # 小时（16 = 下午4点）
    minute=0,           # 分钟（0分）
    id="测试任务",  # 任务唯一 ID
    replace_existing=True,   # 若任务已存在则替换
)

scheduler.add_job(
    pull_futures_history_data,
    trigger="cron",     # 使用cron触发器
    hour=15,            # 小时（16 = 下午4点）
    minute=10,           # 分钟（0分）
    id="每天4点拉取当天行情数据",  # 任务唯一 ID
    replace_existing=True,   # 若任务已存在则替换
)

scheduler.add_job(
    pull_futures_current_data,
    trigger="cron",     # 使用cron触发器
    day_of_week="mon-fri",  # 仅在周一到周五执行
    hour="9-14,21-23",  # 同时指定两个小时范围（用逗号分隔）
    minute="*",          # 每分钟都执行
    second="*/10",       # 每隔10秒执行一次
    id="交易时间，每10s钟拉取实时行情",  # 任务唯一 ID
    replace_existing=True,   # 若任务已存在则替换
)

# 注册事件（必须添加，否则任务不执行）
register_events(scheduler)

# 启动调度器
scheduler.start()
# 确保项目关闭时，调度器正常退出
import atexit
atexit.register(lambda: scheduler.shutdown())

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('future_history_app.urls')),  # 这行很重要，包含了应用的URL
]